package com.ssd.service;

import com.ssd.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ssd.entity.dto.LoginReq;
import com.ssd.entity.vo.LoginResp;
import com.ssd.view.BaseResponse;
import com.ssd.viewmodel.Pager;
import com.ssd.viewmodel.UserWork;

import java.io.IOException;
import java.util.List;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author author
 * @since 2024-11-14
 */
public interface IUserService extends IService<User> {

    /**
     * 新增用户
     * @param user 用户数据
     * @return
     */
    BaseResponse add(User user);

    /**
     * 分页查询用户列表
     * @param pageIndex 当前页
     * @param pageSize 每页显示条数
     * @param userName 用户名称
     * @param roleId 角色id
     * @param isRepair 是否为维修工
     * @return
     */
    Pager<User> findPage(Integer pageIndex, Integer pageSize, String userName, Integer roleId, Boolean isRepair);

    /**
     * 后台登录
     * @param req 登录参数
     * @return
     */
    BaseResponse<LoginResp> login(LoginReq req) throws IOException;

    /**
     * 生成手机验证码
     * @param mobile 手机号
     */
    void sendCode(String mobile);

    /**
     * 获取某区域下运营员列表
     * @param regionId 区域id
     * @return
     */
    BaseResponse<List<User>> getOperatorList(Long regionId);

    /**
     * 获取某区域下维修工列表
     * @param regionId 区域id
     * @return
     */
    BaseResponse<List<User>> getRepairerList(Long regionId);

    /**
     * 搜索用户工作量列表
     * @param pageIndex 当前页
     * @param pageSize 每页大小
     * @param userName 用户名
     * @param roleCode 角色code
     * @return
     */
    BaseResponse<Pager<UserWork>> searchUserWork(long pageIndex, long pageSize, String userName, String roleCode);
}
